package com.dys.testdatetime13;

import java.time.LocalDateTime;

/**
 * @className: com.dys.testdatetime13.DateTimeOperation
 * @description: 日期时间的修改和比较
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/09/03 下午9:01
 */
public class DateTimeOperation02 {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        // localDateTimeUpdate();
        dateTimeCompareTo();
    }

    /**
     * 日期时间的修改
     */
    public static void localDateTimeUpdate() {
        // 1.获取当前日期时间
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("当前日期时间：" + localDateTime);

        // 2.修改日期时间  对日期时间的修改，对已存在的LocalDate对象，创建了它模板
        // 不会修改原始的信息
        LocalDateTime updateYear = localDateTime.withYear(1998);
        System.out.println("修改年份前：" + localDateTime);
        System.out.println("修改年份后：" + updateYear);
        System.out.println("修改月份后：" + localDateTime.withMonth(11));
        System.out.println("修改天后：" + localDateTime.withDayOfMonth(26));
        System.out.println("修改小时后：" + localDateTime.withHour(10));
        System.out.println("修改分钟后：" + localDateTime.withMinute(30));

        // 在当前日期时间的基础上 增加或者减去指定时间
        System.out.println("两天后：" + localDateTime.plusDays(2));
        System.out.println("10年后：" + localDateTime.plusYears(10));
        System.out.println("半年后：" + localDateTime.plusMonths(6));
        System.out.println("7个月后：" + localDateTime.plusMonths(7));

        System.out.println("一周前：" + localDateTime.minusDays(7));
        System.out.println("10年前：" + localDateTime.minusYears(10));
        System.out.println("7个月前：" + localDateTime.minusMonths(7));
    }

    /**
     * 日期时间的比较
     */
    private static void dateTimeCompareTo() {
        // 1.获取当前日期时间
        LocalDateTime now = LocalDateTime.now();
        // 2.获取指定日期时间
        LocalDateTime dateTime = LocalDateTime.of(2023, 9, 1, 10, 23, 22);

        // 在JDK8中要实现 日期的比较 isAfter isBefore isEqual 通过这几个方法来实现
        System.out.println(now.isAfter(dateTime));
        System.out.println(now.isBefore(dateTime));
        System.out.println(now.isEqual(dateTime));
    }

}
